home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / pxcreate / pxcreate.frm < prev    next >
Text File  |  1995-09-06  |  6KB  |  142 lines

  1. VERSION 2.00
  2. Begin Form Form1 
  3.    Caption         =   "PX  Create"
  4.    ClientHeight    =   1170
  5.    ClientLeft      =   870
  6.    ClientTop       =   1530
  7.    ClientWidth     =   2820
  8.    Height          =   1575
  9.    Left            =   810
  10.    LinkMode        =   1  'Source
  11.    LinkTopic       =   "Form1"
  12.    ScaleHeight     =   1170
  13.    ScaleWidth      =   2820
  14.    Top             =   1185
  15.    Width           =   2940
  16.    Begin TextBox ResLabel 
  17.       BackColor       =   &H00FFFFFF&
  18.       BorderStyle     =   0  'None
  19.       Height          =   252
  20.       Left            =   120
  21.       TabIndex        =   2
  22.       Text            =   "PXTblCreate Result"
  23.       Top             =   840
  24.       Width           =   1812
  25.    End
  26.    Begin TextBox ReturnCode 
  27.       Height          =   372
  28.       Left            =   2040
  29.       TabIndex        =   1
  30.       Top             =   720
  31.       Width           =   612
  32.    End
  33.    Begin CommandButton Command1 
  34.       Caption         =   "Generate Test File"
  35.       Height          =   492
  36.       Left            =   120
  37.       TabIndex        =   0
  38.       Top             =   120
  39.       Width           =   2532
  40.    End
  41. End
  42. '**************************************************************************
  43. ' This code is provided "AS IS" into the public domain.
  44. '
  45. ' I needed to use The paradox engine with VB and this is my solution to
  46. ' the problem of creating a table with the paradox engine and VB. I put
  47. ' this together very quickly and did not have much time testing. There may
  48. ' be BUGS in this code that I have not found!
  49. ' It is your responsibility to determine if it is suitible for your purposes.
  50. '
  51. ' Jim Nech
  52. ' OutRider Systems (Producers of Custom Controls for Visual Basic)
  53. '
  54. ' Voice: 713-521-0486    Fax: 713-523-0386
  55. '**************************************************************************
  56.  
  57. ' SEE: The programmers reference for Paradox for windows for
  58. '      complete descriptions of all Paradox functions available.
  59. '
  60. ' The following two functions are needed anytime you use the Paradox engine
  61. ' for windows.
  62. Declare Function PXWinInit Lib "pxengwin.dll" (ByVal AppName$, ByVal PxShare%) As Integer
  63. Declare Function PXExit Lib "pxengwin.dll" () As Integer
  64.  
  65. ' This is the Paradox engine function that creates a data file. Two of it's
  66. ' arguments are pointers to arrays of pointers to strings. Since VB doesn't
  67. ' provide for arrays of pointers to strings we will have to improvise. See
  68. ' the next declare statement.
  69. Declare Function PXTblCreate Lib "pxengwin.dll" (ByVal lpName$, ByVal NumFields%, Flds As Any, Types As Any) As Integer
  70.  
  71. ' This is a standard windows API call. We use it because it returns the far
  72. ' address of it's string argument.
  73. ' We are going to lie to VB and tell VB that it is returning a long. The
  74. ' reason for this is that we need to store this value in one of the elements
  75. ' of an array of longs. A long is the same size as a far address. We are then
  76. ' going to pass the PXTblCreate function a pointer to an array of longs
  77. ' instead of a pointer to an array of pointers to strings. If the elements
  78. ' of the array of longs are actually addresses of strings then it's address
  79. ' is actually a pointer to an array of pointers to strings.
  80. Declare Function AnsiUpper Lib "user" (ByVal lpString$) As Long
  81.  
  82. ' The following arrays will hold the pointers to strings. To see how they are
  83. ' used see the code attached to the Command1 button.
  84. Dim PxFields(5) As Long
  85. Dim PxTypes(5) As Long
  86.  
  87. '***************************************************************************
  88. ' This code is provided "AS IS" into the public domain.
  89. '
  90. ' I needed to use The paradox engine with VB and this is my solution to
  91. ' the problem of creating a table with the paradox engine and VB. I put
  92. ' this together very quickly and did not have much time testing. There may
  93. ' be BUGS in this code that I have not found!
  94. ' It is your responsibility to determine if it is suitible for your purposes.
  95. '
  96. ' Jim Nech
  97. ' OutRider Systems (Producers of Custom Controls for Visual Basic)
  98. '
  99. ' Voice: 713-521-0486    Fax: 713-523-0386
  100. '***************************************************************************
  101. '
  102. ' See the declarations for this module for more detailed information on
  103. ' The various DLL calls and their arguments.
  104. Sub Command1_Click ()
  105.     FLD0$ = "Numeric Field"         ' First field name
  106.     FLD1$ = "Alpha Field"           ' Second field name
  107.     FLD2$ = "Date Field"            ' Ditto
  108.     FLD3$ = "Currency Field"        ' Ditto
  109.     FLD4$ = "Short Field"           ' Ditto
  110.  
  111.     ' Assign the addresses of the strings that define the field names
  112.     ' to the elements of the fields array.
  113.     PxFields(0) = AnsiUpper(FLD0$)
  114.     PxFields(1) = AnsiUpper(FLD1$)
  115.     PxFields(2) = AnsiUpper(FLD2$)
  116.     PxFields(3) = AnsiUpper(FLD3$)
  117.     PxFields(4) = AnsiUpper(FLD4$)
  118.  
  119.     TYP0$ = "N"                     ' First field type
  120.     TYP1$ = "A50"                   ' Second field type
  121.     TYP2$ = "D"                     ' Ditto
  122.     TYP3$ = "$"
  123.     TYP4$ = "S"
  124.  
  125.     ' Assign the addresses of the strings that define the field types to
  126.     ' the elements of the Types array.
  127.     PxTypes(0) = AnsiUpper(TYP0$)
  128.     PxTypes(1) = AnsiUpper(TYP1$)
  129.     PxTypes(2) = AnsiUpper(TYP2$)
  130.     PxTypes(3) = AnsiUpper(TYP3$)
  131.     PxTypes(4) = AnsiUpper(TYP4$)
  132.  
  133.     TableName$ = "table"            ' This is the name of the table to create
  134.  
  135.     x = PXWinInit("TESTSTR", 0)     ' Initialize paradox for windows
  136.     ' Make the call to create the table
  137.     x = PXTblCreate(TableName$, 5, PxFields(0), PxTypes(0))
  138.     x = PXExit()                     ' Exit paradox for windows
  139.     ReturnCode.Text = Str$(x)        ' Save the return code and display it
  140. End Sub
  141.  
  142.